package Package.ProcessesAndThreads.Threads.ThePriorityOfTheThread;

import Package.ProcessesAndThreads.Threads.HowToImplement.InheritTheThreadClass.MyThread;


public class ThePriorityOfTheThread {
    public static final void ThePriorityOfTheThread(){
//线程调度
//两种调度方式
//分时调度模型：所有线程轮流使用 CPU 的使用权，平均分配每个线程占用 CPU 的时间片
//抢占式调度模型：优先让优先级高的线程使用 CPU，如果线程的优先级相同，那么会随机选择一个，优先级高的线程获取的 CPU 时间片相对多一些
//Java使用的是抢占式调度模型
//随机性
//假如计算机只有一个 CPU，那么 CPU 在某一个时刻只能执行一条指令，线程只有得到CPU时间片，也就是使用权，才可以执行指令。所以说多线程程序的执行是有随机性，因为谁抢到CPU的使用权是不一定的
//方法名 说明
//final int getPriority() 返回此线程的优先级
//final void setPriority(int newPriority)更改此线程的优先级 线程默认优先级是5；线程优先级的范围是：1-10
        Mythreads tp1 = new Mythreads();
        Mythreads tp2 = new Mythreads();
        Mythreads tp3 = new Mythreads();
        tp1.setName("高铁");
        tp2.setName("飞机");
        tp3.setName("汽车");
        System.out.println(tp1.getPriority());
        System.out.println(tp2.getPriority());
        System.out.println(tp3.getPriority());
        System.out.println(Thread.MAX_PRIORITY); //10
        System.out.println(Thread.MIN_PRIORITY); //1
        System.out.println(Thread.NORM_PRIORITY); //5
        tp1.setPriority(10);
        tp2.setPriority(9);
        tp3.setPriority(8);
        tp1.start();
        tp2.start();
        tp3.start();
    }
}
